package com.qh.physicsexperiment.domin;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qh.physicsexperiment.utils.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@TableName("report")
@Data
@NoArgsConstructor  //空参构造方法
@AllArgsConstructor //全参构造方法
@Accessors(chain = true)//作用是使成员属性的set方法不再返回void，而是返回对象本身，从而实现链式赋值。
@EqualsAndHashCode(callSuper = true)//父类属性不参与equal
@ApiModel(value="Report对象", description="实验15的报告信息")
public class Report extends BaseEntity {

  /**
   * 实验报告ID
   * 自增
   */
  @ApiModelProperty(value = "实验报告id",notes = "自增，从10000000开始",required = true,dataType = "Long")
  @NotBlank(message = "实验报告id不能为空")
  @TableId(type = IdType.AUTO)
  private Long id;

  /**
   * 实验编号
   * 默认为15
   */
  @ApiModelProperty(value = "实验编号",notes = "默认为15实验牛顿环",allowEmptyValue = true,dataType = "Integer",allowableValues = "2")
  @TableField
  private Integer rid;

  /**
   * 班级序号
   */
  @ApiModelProperty(value = "班级序号",required = true,dataType = "Long",allowableValues = "8")
  @Pattern(regexp = "^d{8}$",message = "班级编号不对")
  private Long cid;

  /**
   * 学生编号
   */
  @ApiModelProperty(value = "学号",required = true,allowableValues = "10",dataType = "Long")
  @Pattern(regexp = "^d{10}$",message = "学号不对")
  private Long sid;

  /**
   * 教师编号
   */
  @ApiModelProperty(value = "教师编号",required = true,dataType = "Long",allowableValues = "4")
  @Pattern(regexp = "^d{4}$",message = "教师编号不对")
  private Long tid;

  /**
   * 成绩
   */
  @ApiModelProperty(value = "实验成绩",notes = "格式:100.00",allowEmptyValue = true,dataType = "Double")
  private Double score;

  /**
   * 状态[0:未开始,1:未完成,2:未批阅,3:已批阅]
   */
  @ApiModelProperty(value = "实验状态",notes = "0:未开始(默认),1:未完成,2:未批阅,3:已批阅",dataType = "Integer",allowEmptyValue = true)
  private Integer state;

  @ApiModelProperty(value = "第一行第一列",notes = "除了e11,12,13是字符外(255字符以内)，其他都是浮点数,可以精确到后三位(0.123)")
  private Double e1_1;
  private Double e1_2;
  private Double e1_3;
  private Double e1_4;
  private Double e1_5;
  private Double e2_1;
  private Double e2_2;
  private Double e2_3;
  private Double e2_4;
  private Double e2_5;
  private Double e3_1;
  private Double e3_2;
  private Double e3_3;
  private Double e3_4;
  private Double e3_5;
  private Double e4_1;
  private Double e4_2;
  private Double e4_3;
  private Double e4_4;
  private Double e4_5;
  private Double e5_1;
  private Double e5_2;
  private Double e5_3;
  private Double e5_4;
  private Double e5_5;
  private Double e6_1;
  private Double e6_2;
  private Double e6_3;
  private Double e6_4;
  private Double e6_5;
  private Double e7_1;
  private Double e7_2;
  private Double e7_3;
  private Double e7_4;
  private Double e7_5;
  private Double e8_1;
  private Double e8_2;
  private Double e8_3;
  private Double e8_4;
  private Double e8_5;
  private Double e9_1;
  private Double e9_2;
  private Double e9_3;
  private Double e9_4;
  private Double e9_5;
  private Double e10_1;
  private Double e10_2;
  private Double e10_3;
  private Double e10_4;
  private Double e10_5;
  private Double e11;
  private String e12;
  private String e13;
//  https://blog.csdn.net/Aku_2020/article/details/125413830
  private java.sql.Timestamp t1_1;
  private java.sql.Timestamp t1_2;
  private java.sql.Timestamp t1_3;
  private java.sql.Timestamp t1_4;
  private java.sql.Timestamp t1_5;
  private java.sql.Timestamp t2_1;
  private java.sql.Timestamp t2_2;
  private java.sql.Timestamp t2_3;
  private java.sql.Timestamp t2_4;
  private java.sql.Timestamp t2_5;
  private java.sql.Timestamp t3_1;
  private java.sql.Timestamp t3_2;
  private java.sql.Timestamp t3_3;
  private java.sql.Timestamp t3_4;
  private java.sql.Timestamp t3_5;
  private java.sql.Timestamp t4_1;
  private java.sql.Timestamp t4_2;
  private java.sql.Timestamp t4_3;
  private java.sql.Timestamp t4_4;
  private java.sql.Timestamp t4_5;
  private java.sql.Timestamp t5_1;
  private java.sql.Timestamp t5_2;
  private java.sql.Timestamp t5_3;
  private java.sql.Timestamp t5_4;
  private java.sql.Timestamp t5_5;
  private java.sql.Timestamp t6_1;
  private java.sql.Timestamp t6_2;
  private java.sql.Timestamp t6_3;
  private java.sql.Timestamp t6_4;
  private java.sql.Timestamp t6_5;
  private java.sql.Timestamp t7_1;
  private java.sql.Timestamp t7_2;
  private java.sql.Timestamp t7_3;
  private java.sql.Timestamp t7_4;
  private java.sql.Timestamp t7_5;
  private java.sql.Timestamp t8_1;
  private java.sql.Timestamp t8_2;
  private java.sql.Timestamp t8_3;
  private java.sql.Timestamp t8_4;
  private java.sql.Timestamp t8_5;
  private java.sql.Timestamp t9_1;
  private java.sql.Timestamp t9_2;
  private java.sql.Timestamp t9_3;
  private java.sql.Timestamp t9_4;
  private java.sql.Timestamp t9_5;
  private java.sql.Timestamp t10_1;
  private java.sql.Timestamp t10_2;
  private java.sql.Timestamp t10_3;
  private java.sql.Timestamp t10_4;
  private java.sql.Timestamp t10_5;
  private java.sql.Timestamp t11;
  private java.sql.Timestamp t12;
  private java.sql.Timestamp t13;

  //反序列化唯一标识？没看懂
  @TableField(exist = false)
  private static final long serialVersionUID = 1L;
}
